<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组</title>
</head>
<body>
    <script type="text/javascript">

        // 1、关于数组位置的方法
        var arr1 = [1,2,3,4,5,4,3,2,1];
        var index = arr1.indexOf(4);
        // 一个参数的时候，第一个参数表示要检索的位置
        alert("4出现的第一个位置是："+index);
        // 两个参数的时候，第一个参数表示起始位置，第二个位置才是要检索的数字
        var index2 = arr1.indexOf(4,4);
        alert("从索引为4的位置出发，4出现的索引是："+index2)
        var index3 = arr1.lastIndexOf(2);
        alert("2出现的第一个位置是："+index3);

        //2、5个新增的迭代的方法
        // every：数组中的每一个元素都进行函数的运行，如果都返回true，则返回true
        var result1 = arr1.every(function (item,index,array) {
            return item>2;
        });
        alert("every的结果是："+result1);

        // filter：数组中的每一个元素都进行函数的运行，返回过滤后的结果
        var result2 = arr1.every(function (item,index,array) {
            return item>2;
        })
        alert("filter的结果是："+result2);

        // forEach：循环数组每一项的值，并返回结果
        arr1.forEach(function (item, index, array) {
            alert("foreach的结果是："+item)
        })

        // map：数组中的每一个元素都进行函数的运行，返回新的结果
        var result3 = arr1.map(function (item,index,array) {
            return item*2;
        })
        alert("map的结果是："+result3);

        // some：数组中的每一个元素都进行函数的运行，如果有一个返回true，则返回true
        var result4 = arr1. (function (item,index,array) {
            return item>4;
        });
        alert("some的结果是："+result4);

        // reduce方法和reduceRight方法遍历的起始位置不同
        var result5 = arr1.reduce(function (pre,cur,index,array) {
            return pre+cur;
        })
        alert(result5)

        var result6  = arr1.reduceRight(function (pre,cur,index,array) {
            return pre+cur;
        })
        alert(result6)

    </script>

</body>
</html>